package com.cskaoyan._04hierarchy;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/9 10:22
 **/
/*
几个概念:
1.祖先类:处于继承层次的顶层(如果一个类没有显式的使用extends关键字,祖先类就是Object类,
    Object类是所有类的祖先类)
2.继承层次:某个祖先类派生的所有子类的集合
3.继承链:子类到祖先类的一个路径

注意事项:
1. 在一条继承链中，总称呼下游类是上游类的子类，不管隔了几层。没有孙子类或者重孙类这种概念。
2. 在一条继承链中的，下游的类总是继承上游类的所有成员，不管隔了几层。
3. 在一条继承链中，下游类总可以看成一个上游类，存在"is-a"关系。
4. 不在同一条继承链中的类，没有任何关系。虽然看起来像"兄弟姐妹"类，但是Java是不讲究血统的。
   - 因为一方面，子类可以自由扩展功能；另一方面，继承来的东西也是可以修改的。
   - 所以"兄弟姐妹"可能完全和"我"不同，没有任何关系。
5. 不能循环定义继承。比如A继承B，B继承C，再让C来继承A，这是不行的。
6. 继承链可以无限延伸下去，但是一般来说有个5~6层继承，已经很多了。
 */
public class Demo2 {
    public static void main(String[] args) {
        GrandFather grandFather = new GrandFather();

    }
}

class GrandFather{
    int a;
}

class Father extends  GrandFather{
    int b;
}

class Son extends Father{
    int c;
}

class GrandSon extends Son{
    int d;
}

// Cyclic inheritance involving 'com.cskaoyan._04hierarchy.A'
// 不能循环继承
//class A extends C{}
//
//class B extends A{}
//
//class C extends B{}